package com.atguigu.study.config;

import com.atguigu.study.service.ChatAssistant;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author Marco
 * @Description
 * @date 2025/8/17 22:12
 * @email 3293336923@qq.com
 */
@Configuration
public class LLMConfiguration {


    @Bean(name = "qWen")
    public ChatModel chatModel() {

        return OpenAiChatModel.builder()
//            从 系统的 环境变量中进行获取
                .apiKey(System.getenv("ALIQW"))
                .modelName("qwen-plus")
                .baseUrl("https://dashscope.aliyuncs.com/compatible-mode/v1")
                .build();
    }


    @Bean(name = "deepSeek")
    public ChatModel chatModelDeepSeek() {
        return
                OpenAiChatModel.builder()
                        .apiKey(System.getenv("DEEPSEEK"))
//                        聊天频繁使用 的 接口
                        .modelName("deepseek-chat")
//                        复杂的计算和逻辑推理 较多 使用这个 接口
//                        .modelName("deepseek-reasoner")
                        .baseUrl("https://api.deepseek.com/v1")
                        .build();
    }


    /***
     *  通过封装底层 API (ChatModel) ， 底层使用 反射创建 ChatAssistant 代理对象
     *   可以手动的更改要使用的大模型
     * @param chatModel
     * @return
     */
    @Bean
    public ChatAssistant   chatAssistant(@Qualifier(value = "deepSeek") ChatModel  chatModel){

        return   AiServices.create(ChatAssistant.class , chatModel);
    }


}
